<?php

class UsuarioController extends CI_Controller {

    private $layout;

    public function __construct() {
        parent::__construct();
        $this->load->model('usuarioModel', 'usuario');
        $this->load->model('tipousuarioModel', 'tipousuario');
        $this->layout['librerias'] = $this->load->view(TMPL_LIBRERIA, "", true);
        $this->layout['menu'] = $this->load->view(TMPL_MENU, "", true);
        $this->layout['pie'] = $this->load->view(TMPL_PIE, "", true);
    }

    public function index() {
        $data['usuarios'] = json_decode($this->usuario->listar_usuarios());
        $data['menu'] = $this->load->view('usuario/menu', '', TRUE);
        $this->layout['contenido'] = $this->load->view('usuario/index', $data, true);
        $this->load->view(TMPL_GENERAL, $this->layout);
    }

    public function editar($id) {
        $this->form_validation->set_rules('nombre', 'NOMBRE', 'required');
        $this->form_validation->set_rules('apellido', 'APELLIDO', 'required');
        $this->form_validation->set_rules('email', 'EMAIL', 'required|valid_email');
        $this->form_validation->set_rules('direccion', 'DIRECCION', 'required');
        $this->form_validation->set_rules('tipo_usuario', 'TIPO USUARIO', 'required');

        if ($this->form_validation->run() == FALSE) {
            $data['usuario'] = json_decode($this->usuario->select_usuario($id));
            $data['tipos_usuarios'] = json_decode($this->tipousuario->listar_tipos_usuario());
            $data['menu'] = $this->load->view('usuario/menu', '', TRUE);
            $this->layout['contenido'] = $this->load->view('usuario/editar', $data, true);
            $this->load->view(TMPL_GENERAL, $this->layout);
        } else {
            // Capturamos los datos personales y volvemos a la lista de usuarios
            $usuario['id'] = $id;
            $usuario['nombre'] = $this->input->post('nombre');
            $usuario['apellido'] = $this->input->post('apellido');
            $usuario['email'] = $this->input->post('email');
            $usuario['direccion'] = $this->input->post('direccion');
            $usuario['tipo_usuario'] = $this->input->post('tipo_usuario');
            $this->usuario->update_usuario($usuario);
            redirect("usuarioController");
        }
    }

    public function crear_usuario() {
        $this->form_validation->set_rules('nombre', 'NOMBRE', 'required');
        $this->form_validation->set_rules('apellido', 'APELLIDO', 'required');
        $this->form_validation->set_rules('email', 'EMAIL', 'required|valid_email|callback_email_check');
        $this->form_validation->set_rules('direccion', 'DIRECCION', 'required');
        $this->form_validation->set_rules('dni', 'DNI', 'required|exact_length[8]|integer|callback_dni_check');
        $this->form_validation->set_rules('tipo_usuario', 'TIPO USUARIO', 'required|numeric');
        $this->form_validation->set_rules('direccion', 'DIRECCION', 'required');
        $this->form_validation->set_rules('clave', 'CLAVE', 'required');

        if ($this->form_validation->run() == FALSE) {
            $data['clave']=$this->generar_clave(10);
            $data['tipos_usuarios'] = json_decode($this->tipousuario->listar_tipos_usuario());
            $data['menu'] = $this->load->view('usuario/menu', '', TRUE);
            $this->layout['contenido'] = $this->load->view('usuario/create', $data, true);
            $this->load->view(TMPL_GENERAL, $this->layout);
        } else {
            // Capturamos los datos personales y volvemos a la lista de usuarios
            $usuario['nombre'] = $this->input->post('nombre');
            $usuario['apellido'] = $this->input->post('apellido');
            $usuario['email'] = $this->input->post('email');
            $usuario['dni'] = $this->input->post('dni');
            $usuario['direccion'] = $this->input->post('direccion');
            $usuario['tipo_usuario'] = $this->input->post('tipo_usuario');
            $usuario['clave'] = $this->input->post('clave');
            echo "Usuario".$usuario['clave'];
            $this->usuario->insert_usuario($usuario);
            redirect("usuarioController");
        }
    }

    function generar_clave($longitud) {
        $cadena = "[^A-Z0-9]";
        return substr(preg_replace($cadena, "", md5(rand())) .
                preg_replace($cadena, "", md5(rand())) .
                preg_replace($cadena, "", md5(rand())), 0, $longitud);
    }

    function email_check($email) {

        $values['email'] = $email;

        if ($this->usuario->validar('email', $values)) {
            $this->form_validation->set_message('email_check', 'El %s ya existe');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    function dni_check($dni) {

        $values['dni'] = $dni;

        if ($this->usuario->validar('dni', $values)) {
            $this->form_validation->set_message('dni_check', 'El %s ya existe');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    function eliminar($id) {
        $this->usuario->delete_usuario($id);
        redirect("usuarioController");
    }

}

?>
